import { PublishOptions, SubscribeOptions, MessageConsumeModel } from './../src/index';

import EventBus from './../src/index';
console.log('begin test')

// setInterval(() => {
//     //普通topic消息发布
//     EventBus.Publish('defualt', 'order', 'order.create', '', { id: 'aa', name: 'bb', time: Date.now() }).then(p => {
//         // console.log('order_create published:' + p)
//     })
//     //fanout消息发布
//     EventBus.Publish('defualt', 'setting-async', '', '', { settingChanged: '参数修改', settingId: Date.now() }).then(p => {
//         // console.log('setting-async published:' + p)
//     })

// }, 500)
var i = 0;
setInterval(() => {
    // 普通topic消息发布，集群消费测试
    var time = (++i)
    EventBus.Publish('defualt', 'product', 'product.create', '', { id: 'aa', name: 'bb', time: time }).then(p => {
        console.log('ONE::' + time + '   order_create published:' + p)
    })
}, 500)

// setInterval(() => {
//     // 普通topic消息发布，集群消费测试
//     var time = Date.now()
//     EventBus.Publish('defualt', 'product', 'product.create', time + '', { id: 'aa', name: 'bb', time: time }).then(p => {
//         console.log('TWO::' + time + '   order_create published:' + p)
//     })
// }, 1)

//集群消费
// EventBus.Subscribe<any>('defualt', 'product_user_async_product.#', message => {
//     i += 1;
//     // console.log('消费ONE      用户订阅商品所有消息，同步商品信息到商品用户分表', message)
//     console.log('消费ONE  ' + message.time + '    用户订阅商品所有消息，同步商品信息到商品用户分表' + (message.time % 3))
//     return new Promise((resolve, reject) => {
//         setTimeout(function () {
//             if (message.time % 3 == 0)
//                 reject('piapia')
//             else
//                 resolve(true)
//         }, 1000);
//     })
// }, { BasicQOS: 2 })
// EventBus.Subscribe<any>('defualt', 'product_user_async_product.#', message => {
//     // console.log('消费two      用户订阅商品所有消息，同步商品信息到商品用户分表', message)
//     console.log('消费TWO  ' + message.time + '    用户订阅商品所有消息，同步商品信息到商品用户分表')
//     return new Promise((resolve, reject) => {
//         setTimeout(function () {
//             resolve(true)
//         }, 800);
//     })
// }, { BasicQOS: 2 })



// //topic routekey分发消费
// EventBus.Subscribe<any>('defualt', 'order_customerService_assgin_order.create', message => {
//     console.log('客服订阅订单创建消息，为订单分配客服', message)
//     return true;
// })
// EventBus.Subscribe<any>('defualt', 'order_user_action_order.create', message => {
//     console.log('用户订阅订单创建消息，增加用户订单计数', message)
//     return true;
// })
// EventBus.Subscribe<any>('defualt', 'order_user_async_order.#', message => {
//     console.log('用户订阅订单下所有消息，同步订单数据到用户分表', message)
//     return true;
// })

// //广播消费
// EventBus.Subscribe<any>('defualt', 'setting-async', message => {
//     console.log('subscribe setting-async', message)
//     return true;
// }, { Model: MessageConsumeModel.Broadcasting })

// EventBus.Subscribe<any>('defualt', 'setting-async', message => {
//     console.log('subscribe app setting-async', message)
//     return true;
// }, { Model: MessageConsumeModel.Broadcasting })
